package com.baoyouqun.domain.cmd;

import cn.hutool.core.util.StrUtil;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;

import java.util.List;

/**
 * 批量更新举报记录状态的命令DTO（用于批量设违规/批量设正常）
 * 对齐用户参数校验风格：含错误码，非空校验
 */
@Data
public class BatchUpdateReportStatusCmd {

    /**
     * 待处理的举报记录ID列表（必填）
     * 错误码100301：与用户示例中“参数不能为空”错误码保持一致
     */
    @NotEmpty(message = "100301:举报记录ID列表不能为空")
    private List<String> reportIds;

    /**
     * 处理人ID（当前操作的管理员ID，必填）
     * 避免空字符串（用StrUtil判断，对齐用户工具类使用习惯）
     */
    private String handlerUserId;

    /**
     * 处理结果描述（可选，默认填充系统提示）
     * 批量设违规/正常时可自定义，无值时用默认文案
     */
    private String handleResult = "系统批量操作处理";

    /**
     * 自定义校验：处理结果若有值，长度不超过500字（避免数据库字段超长）
     * 对齐用户业务字段长度控制逻辑
     *
     * @return 校验结果
     */
    public boolean isValidHandleResult() {
        return StrUtil.isBlank(handleResult) || handleResult.length() <= 500;
    }

    /**
     * 获取处理结果校验失败提示
     *
     * @return 错误信息（含错误码）
     */
    public String getHandleResultErrorMsg() {
        return "100304:处理结果描述不能超过500个字符";
    }
}